package com.ypan.structure;

/**
 * @author: ypan
 * @date: 2021/3/11 20:45
 * @desc: 代理模式
 * 单纯看一下最基础代理模式是什么样的。代理就是，一个对象辅助另一个对象去做某件事，同时还可以增加一点辅助功能。
 * 例如，你买车，的确是你花钱把车买到了，但是你不可能直接去和厂家谈吧，你应该通过4S店购买，
 * 同时4S店帮助你入保险扣税等操作，最终你才得到了你想要的车。
 */
public class ProxyPattern {

    interface Buy{
        void createBuy();
    }

    static class People implements Buy{

        public void createBuy() {
            System.out.println("用户买车");
        }
    }

    static class ProxyPeople implements Buy{
        private final People people;

        ProxyPeople(People people){
            this.people = people;
        }

        public void createBuy() {
            people.createBuy();
            System.out.println("办理税收");
        }

    }

    public static void main(String[] args) {
        ProxyPeople proxyPeople = new ProxyPeople(new People());
        proxyPeople.createBuy();
    }

}
